#include "widget.h"
#include "ui_widget.h"


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

       //选择数据库
       db = QSqlDatabase::addDatabase("QMYSQL");       //连接数据库驱动
       db.setHostName("192.168.74.128");               //设置数据库主机名
       db.setUserName("users");                        //设置数据库银魂
       db.setDatabaseName("clientdatabase");           //设置要连接的数据库名称
       db.setPassword("user");                         //设置密码


       //数据库连接
       if(db.open())
       {
           QMessageBox::information(this,"数据库连接提示","连接成功");         //数据库连接成功，提示
       }
       else
       {
           QMessageBox::critical(this, "数据库连接失败",db.lastError().text());    //数据库连接失败显示错误信息
           qDebug() << db.lastError();


       }

}

Widget::~Widget()
{
    delete ui;
}

//注册按钮
void Widget::on_registerPushButton_clicked()
{
    clientRegister regDialog;       //创建注册界面对话框对象
    regDialog.setGeometry(this->geometry());        //设置对话框几何形状与当前对话框相同

    // 显示模态对话框并点击了确定接收操作
    if (regDialog.exec() == QDialog::Accepted) {
        QMessageBox::information(this, "提示", "注册成功");       //弹出注册成功消息框
    }

}

//登录按钮
void Widget::on_loginPushButton_clicked()
{
    QString account = ui->accountLineEdit->text();          //获取账号输入框文本
    QString password = ui->passwordLineEdit->text();        //获取密码输入框文本

    //如果账号或密码输入框为空
    if(account.isEmpty() && password.isEmpty())
    {
        QMessageBox::warning(this, "警告", "账号或密码不能为空");
    }

    QSqlQuery loginquery;       //创建数据库查询操作
    loginquery.prepare("select * from users where account =:account and password =:password");      //查询
    loginquery.bindValue(":account",account);           //将实际账号值绑定到参数
    loginquery.bindValue(":password",password);         //将实际密码值绑定到参数

    //查询成功且有下一条记录
    if(loginquery.exec() && loginquery.next())
    {
        QMessageBox::information(this, "成功", "登录成功");       //弹出查询成功信息框
    }
    else
    {
        QMessageBox::critical(this, "失败", "账号或密码错误");     //弹出查询失败信息框
    }
}


//关闭界面
void Widget::on_closePushButton_clicked()
{
    this->close();
}

